剑指offer42.
输入一组升序数组，求出和为sum的两个数，如果有多组，则返回乘积最小的那两个数。
//题解：题目已经说明这一组数据是升序的，那么首先应该知道，最外层的和为sum的数必定乘积最小，这是一个数学规律
//接下来就比较好解决了，定义两个指针分别从头尾向中间进行寻找，如果找到和为sum的，直接输出
import java.util.ArrayList;

class Solution{
public ArrayList<Integer> FindNumWithSum(int[] array,int sum){
	ArrayList<Integer> list=new ArrayList<>();
	if(array.length==0) return list;
	int low=0,high=array.length-1;
	while(low<=high){
		if(array[low]+array[high]>sum){//因为数组是升序，所以执行high--
			high--;
	}else if(array[low]+array[high]<sum){//因为数组是降序，所以执行low++
		low++;
	}else{
		break;//找到之和为sum的两个数，break
		}
	}
	if(low>high){
	return list;//循环退出可能是两种情况，显然low>high时表示没有找到匹配的数字
	}
	list.add(array[low]);//执行break退出的情况，就是我们要找的两个数字，将low和high下标对应的数字add进list中
	list.add(array[high]);
	return list;
	}
}
